home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / fish / 701-725 / 708 / intuisup / intuisup42.lha / Intuisup / source.lha / Gadgets / gadgets.h < prev    next >
C/C++ Source or Header  |  1992-05-14  |  15KB  |  360 lines

  1. /* $Revision Header *** Header built automatically - do not edit! ***********
  2.  *
  3.  *    (C) Copyright 1991 by Torsten Jürgeleit
  4.  *
  5.  *    Name .....: gadgets.h
  6.  *    Created ..: Thursday 19-Dec-91 20:52:44
  7.  *    Revision .: 5
  8.  *
  9.  *    Date        Author                 Comment
  10.  *    =========   ====================   ====================
  11.  *    14-Apr-92   Torsten Jürgeleit      neq flag GADGET_DATA_FLAG_NO_CLEAR
  12.  *    01-Apr-92   Torsten Jürgeleit      any references to gadget data
  13.  *                                         via gl_Data removed
  14.  *    01-Apr-92   Torsten Jürgeleit      changed parameter size of
  15.  *                                         modify_gadget() for new value of
  16.  *                                         USE_CURRENT_VALUE (1L << 31)
  17.  *    31-Mar-92   Torsten Jürgeleit      changed USE_CURRENT_VALUE from ~0L
  18.  *                                         to (1L << 31)
  19.  *    21-Mar-92   Torsten Jürgeleit      flags for converting numbers with
  20.  *                                         string gadgets
  21.  *    19-Dec-91   Torsten Jürgeleit      Created this file!
  22.  *
  23.  ****************************************************************************
  24.  *
  25.  *    Defines, structures, prototypes and pragmas for gadget functions
  26.  *
  27.  * $Revision Header ********************************************************/
  28.  
  29. #ifndef    ISUP_GADGETS_H
  30. #define    ISUP_GADGETS_H
  31.  
  32.     /* Defines for gadgets */
  33.  
  34. #define GADGET_DATA_TYPE_BUTTON        1    /* button gadget */
  35. #define GADGET_DATA_TYPE_CHECK        2    /* check mark gadget */
  36. #define GADGET_DATA_TYPE_MX        3    /* mutual exclude gadget */
  37. #define GADGET_DATA_TYPE_STRING        4    /* string input gadget */
  38. #define GADGET_DATA_TYPE_INTEGER    5    /* integer input gadget */
  39. #define GADGET_DATA_TYPE_SLIDER        6    /* slider gadget */
  40. #define GADGET_DATA_TYPE_SCROLLER    7    /* scroller gadget */
  41. #define GADGET_DATA_TYPE_CYCLE        8    /* cycle gadget */
  42. #define GADGET_DATA_TYPE_COUNT        9    /* count gadget */
  43. #define GADGET_DATA_TYPE_LISTVIEW    10    /* list view gadget */
  44. #define GADGET_DATA_TYPE_PALETTE    11    /* palette gadget */
  45.  
  46. #define MAX_GADGET_DATA_TYPE        GADGET_DATA_TYPE_PALETTE
  47.  
  48. #define GADGET_DATA_FLAG_DISABLED        (1L << 0)    /* gadget disabled (ghosted) - default enabled */
  49. #define GADGET_DATA_FLAG_NO_BORDER        (1L << 1)    /* no gadget border - default with border */
  50. #define GADGET_DATA_FLAG_HIGH_COMP        (1L << 2)    /* highliting by complement - default by select border */
  51. #define GADGET_DATA_FLAG_ORIENTATION_VERT    (1L << 3)    /* vertical orientation - default horizontal */
  52. #define GADGET_DATA_FLAG_HOTKEY            (1L << 4)    /* hotkey given - default none */
  53. #define GADGET_DATA_FLAG_NO_TEXT_OUTPUT        (1L << 5)    /* no text output, but scan gadget text for hotkey */
  54. #define GADGET_DATA_FLAG_TEXT_LEFT        (1L << 6)    /* place text left of gadget */
  55. #define GADGET_DATA_FLAG_TEXT_RIGHT        (1L << 7)    /* place text right of gadget */
  56. #define GADGET_DATA_FLAG_TEXT_ABOVE        (1L << 8)    /* place text above of gadget */
  57. #define GADGET_DATA_FLAG_TEXT_BELOW        (1L << 9)    /* place text below of gadget */
  58. #define GADGET_DATA_FLAG_TEXT_COLOR2        (1L << 10)    /* use 2nd text render pen for gadget text */
  59. #define GADGET_DATA_FLAG_BUTTON_TOGGLE        (1L << 11)    /* button gadgets: toggle button - default no toggle */
  60. #define GADGET_DATA_FLAG_BUTTON_IMAGE        (1L << 12)    /* button gadgets: render image - default no image */
  61. #define GADGET_DATA_FLAG_INPUT_AUTO_ACTIVATE    (1L << 13)    /* input gadgets: acivate after GADGETUP next or previous input gadget */
  62. #define GADGET_DATA_FLAG_STRING_UNSIGNED_DEC    (1L << 14)    /* string gadgets: input default no pointer to string but an unsigned decimal number */
  63. #define GADGET_DATA_FLAG_STRING_SIGNED_DEC    (1L << 15)    /* string gadgets: input default no pointer to string but an signed decimal number */
  64. #define GADGET_DATA_FLAG_STRING_HEX        (1L << 16)    /* string gadgets: input default no pointer to string but an hex number */
  65. #define GADGET_DATA_FLAG_STRING_BIN        (1L << 17)    /* string gadgets: input default no pointer to string but an binary number */
  66. #define GADGET_DATA_FLAG_SCROLLER_NO_ARROWS    (1L << 18)    /* scroller gadget: no arrows - default with arrows */
  67. #define GADGET_DATA_FLAG_COUNT_SIGNED_DEC    (1L << 19)    /* count gadget: signed dec - default unsigned dec */
  68. #define GADGET_DATA_FLAG_LISTVIEW_READ_ONLY    (1L << 20)    /* list view gadget: read only - default selection enabled */
  69. #define GADGET_DATA_FLAG_LISTVIEW_SHOW_SELECTED (1L << 21)    /* list view gadget: show last selected entry - default no */
  70. #define GADGET_DATA_FLAG_PALETTE_NO_INDICATOR    (1L << 22)    /* palette gadget: no current color indicator - default with indicator */
  71. #define GADGET_DATA_FLAG_PALETTE_INDICATOR_TOP    (1L << 23)    /* palette gadget: place indicator at top - default at left */
  72. #define GADGET_DATA_FLAG_MOVE_POINTER        (1L << 24)    /* move mouse pointer to center of this gadget */
  73. #define GADGET_DATA_FLAG_NO_CLEAR        (1L << 25)    /* don't clear area occupied by this gadget before drawing */
  74.  
  75. #define GADGET_IDCMP_FLAGS_BUTTON    (GADGETUP | VANILLAKEY)
  76. #define GADGET_IDCMP_FLAGS_CHECK    (GADGETDOWN | VANILLAKEY)
  77. #define GADGET_IDCMP_FLAGS_MX        (GADGETDOWN | VANILLAKEY)
  78. #define GADGET_IDCMP_FLAGS_STRING    (GADGETUP | VANILLAKEY)
  79. #define GADGET_IDCMP_FLAGS_INTEGER    (GADGETUP | VANILLAKEY)
  80. #define GADGET_IDCMP_FLAGS_SLIDER    (GADGETUP | MOUSEMOVE | VANILLAKEY)
  81. #define GADGET_IDCMP_FLAGS_SCROLLER    (GADGETDOWN | GADGETUP | MOUSEMOVE | INTUITICKS | VANILLAKEY)
  82. #define GADGET_IDCMP_FLAGS_CYCLE    (GADGETUP | VANILLAKEY)
  83. #define GADGET_IDCMP_FLAGS_COUNT    (GADGETDOWN | GADGETUP | MOUSEMOVE | VANILLAKEY)
  84. #define GADGET_IDCMP_FLAGS_LISTVIEW    (GADGETDOWN | GADGETUP | MOUSEMOVE | INTUITICKS | VANILLAKEY)
  85. #define GADGET_IDCMP_FLAGS_PALETTE    (GADGETUP | VANILLAKEY)
  86. #define GADGET_IDCMP_FLAGS_ALL        (GADGETDOWN | GADGETUP | MOUSEMOVE | INTUITICKS | VANILLAKEY)
  87.  
  88. #define GADGET_LIST_FLAG_DISPLAYED    (1 << 0)    /* gadget list currently displayed */
  89.  
  90. #define EXTENDED_GADGET_TYPE_BUTTON        1
  91. #define EXTENDED_GADGET_TYPE_CHECK        2
  92. #define EXTENDED_GADGET_TYPE_MX            3
  93. #define EXTENDED_GADGET_TYPE_STRING        4
  94. #define EXTENDED_GADGET_TYPE_INTEGER        5
  95. #define EXTENDED_GADGET_TYPE_SLIDER_PROP    6
  96. #define EXTENDED_GADGET_TYPE_SCROLLER_PROP    7
  97. #define EXTENDED_GADGET_TYPE_SCROLLER_LEFT    8
  98. #define EXTENDED_GADGET_TYPE_SCROLLER_RIGHT    9
  99. #define EXTENDED_GADGET_TYPE_SCROLLER_UP    10
  100. #define EXTENDED_GADGET_TYPE_SCROLLER_DOWN    11
  101. #define EXTENDED_GADGET_TYPE_CYCLE        12
  102. #define EXTENDED_GADGET_TYPE_COUNT        13
  103. #define EXTENDED_GADGET_TYPE_LISTVIEW_PROP    14
  104. #define EXTENDED_GADGET_TYPE_LISTVIEW_UP    15
  105. #define EXTENDED_GADGET_TYPE_LISTVIEW_DOWN    16
  106. #define EXTENDED_GADGET_TYPE_LISTVIEW_ENTRY    17
  107. #define EXTENDED_GADGET_TYPE_PALETTE_INDICATOR    18
  108. #define EXTENDED_GADGET_TYPE_PALETTE_COLOR    19
  109.  
  110. #define EXTENDED_GADGET_FLAG_HOTKEY        (1 << 0)
  111. #define EXTENDED_GADGET_FLAG_RENDER_BORDER    (1 << 1)
  112. #define EXTENDED_GADGET_FLAG_RENDER_IMAGE    (1 << 2)
  113. #define EXTENDED_GADGET_FLAG_NORMAL_IMAGE_COPY    (1 << 3)
  114. #define EXTENDED_GADGET_FLAG_SELECT_IMAGE_COPY    (1 << 4)
  115. #define EXTENDED_GADGET_FLAG_CLOSE_FONT        (1 << 5)
  116.  
  117. #define USE_CURRENT_VALUE    (1L << 31)    /* used for set_gadget_attributes() to indicate data for which to use the current value */
  118.  
  119.     /* Defines for internal use only */
  120.  
  121. #define QUALIFIER_SHIFT        (IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT)
  122. #define QUALIFIER_ALT        (IEQUALIFIER_LALT | IEQUALIFIER_RALT)
  123.  
  124. #define ARROW_AUTO_REPEAT_START_DELAY    3
  125.  
  126. #define MAX_CYCLE_DELAY        5
  127.  
  128. #define CYCLE_POP_XOFFSET    4
  129. #define CYCLE_POP_YOFFSET    2
  130.  
  131. #define CYCLE_LIST_ENTRY_YPOS(num)    (yinc > 0 ? num * yinc : (cy->cy_TextEntries - num - 1) * -yinc);
  132.  
  133. #define MAX_COUNT_DELAY        5
  134. #define MAX_COUNT_STEP_SIZE    20
  135. #define MAX_COUNT_DISTANCE    (MAX_COUNT_DELAY * MAX_COUNT_STEP_SIZE)
  136. #define MIN_COUNT_DELAY_MICROS    30000L
  137.  
  138. #define MAX_DATA_FLAG_BITS    32
  139.  
  140. #define DEC_NUM_CONVERT_FLAGS    0
  141. #define HEX_NUM_CONVERT_FLAGS    (CONVERT_FLAG_IDENTIFIER | CONVERT_FLAG_C_STYLE)
  142. #define BIN_NUM_CONVERT_FLAGS    CONVERT_FLAG_IDENTIFIER
  143.  
  144.     /* Structures */
  145.  
  146. struct VisibleGadgetLists {
  147.     struct SignalSemaphore  vg_Semaphore;
  148.     struct MinList          vg_MinList;
  149.     USHORT    vg_Count;
  150. };
  151. struct GadgetList {
  152.     struct MinNode     gl_MinNode;     /* node to insert GadgetList into VisibleGadgetLists list */
  153.     struct RenderInfo  *gl_RenderInfo;
  154.     struct Window      *gl_Window;
  155.     LONG    gl_ID;            /* id = 'ISUP' */
  156.     USHORT    gl_DataEntries;        /* number of entries in gadget data array */
  157.     UBYTE    gl_Flags;
  158.     UBYTE    gl_AutoRepeatDelay;    /* delay counter for start of auto repeat for active arrow gadget */
  159.     BYTE    *gl_GadgetBuffer;
  160.     ULONG    gl_GadgetBufferSize;
  161.     BYTE    *gl_ImageBuffer;
  162.     ULONG    gl_ImageBufferSize;
  163.     BYTE    **gl_LanguageTextArray;
  164.     struct RequesterList   *gl_RequesterList;
  165.     struct ExtendedGadget  *gl_ActiveGadget;
  166.     struct ExtendedGadget  *gl_Gadgets[1];    /* array with gl_DataEntries ptr to extended gadgets */
  167. };
  168. struct GadgetData {
  169.     ULONG    gd_Type;
  170.     ULONG    gd_Flags;
  171.     USHORT    gd_LeftEdge;
  172.     USHORT    gd_TopEdge;
  173.     USHORT    gd_Width;
  174.     USHORT    gd_Height;
  175.     BYTE    *gd_Text;
  176.     struct TextAttr  *gd_TextAttr;
  177.     union    {
  178.         struct {    /* standard data struct */
  179.         LONG    gd_Data1;
  180.         LONG    gd_Data2;
  181.         VOID    *gd_Data3;
  182.         } gd_Data;
  183.  
  184.         struct {    /* for button gadgets */
  185.         ULONG    gd_ButtonSelected;        /* selection state for toggle buttons - ZERO = unselected, non ZERO = selected */
  186.         struct Image  *gd_ButtonNormalRender;    /* normal render image */
  187.         struct Image  *gd_ButtonSelectRender;    /* select render image */
  188.         } gd_ButtonData;
  189.  
  190.         struct {    /* for check gadgets */
  191.         ULONG    gd_CheckSelected;    /* selection state - ZERO = unselected, non ZERO = selected */
  192.         ULONG    gd_CheckPad1;
  193.         ULONG    gd_CheckPad2;
  194.         } gd_CheckData;
  195.  
  196.         struct {    /* for mutual exclude gadgets */
  197.         ULONG    gd_MXSpacing;        /* pixel spacing between MX gadgets */
  198.         ULONG    gd_MXActiveEntry;    /* num of active entry from text array */
  199.         BYTE    **gd_MXTextArray;    /* ptr to MX text ptr array */
  200.         } gd_MXData;
  201.  
  202.         struct {    /* for string and integer gadgets */
  203.         ULONG    gd_InputLen;        /* len of input buffer */
  204.         USHORT    gd_InputActivateNext;    /* num of next string/num gadget to activate */
  205.         USHORT    gd_InputActivatePrev;    /* num of previous string/num gadget to activate */
  206.         BYTE    *gd_InputDefault;    /* string: default text [syntax: "text"] */
  207.                         /* integer: default number [syntax: (VOID *)num] */
  208.         } gd_InputData;
  209.  
  210.         struct {    /* for slider gadgets */
  211.         LONG    gd_SliderMin;        /* min level */
  212.         LONG    gd_SliderMax;        /* max level */
  213.         LONG    gd_SliderLevel;        /* current slider level */
  214.         } gd_SliderData;
  215.  
  216.         struct {    /* for scroller gadgets */
  217.         ULONG    gd_ScrollerVisible;    /* visible entries */
  218.         ULONG    gd_ScrollerTotal;    /* total entries */
  219.         ULONG    gd_ScrollerTop;        /* current top entry */
  220.         } gd_ScrollerData;
  221.  
  222.         struct {    /* for cycle gadget */
  223.         ULONG    gd_CycleSpacing;    /* pixel spacing between pop up cycle list entries */
  224.         ULONG    gd_CycleActive;        /* num of current cycle text ptr array entry */
  225.         BYTE    **gd_CycleTextArray;    /* ptr to cycle text ptr array */
  226.         } gd_CycleData;
  227.  
  228.         struct {    /* for count gadget */
  229.         ULONG    gd_CountMin;        /* min value */
  230.         ULONG    gd_CountMax;        /* max value */
  231.         ULONG    gd_CountValue;    /* current count value */
  232.         } gd_CountData;
  233.  
  234.         struct {    /* for list view gadget */
  235.         ULONG    gd_ListViewSpacing;    /* pixel spacing between list view entries */
  236.         ULONG    gd_ListViewTop;        /* current top entry */
  237.         struct List  *gd_ListViewList;    /* current list ptr */
  238.         } gd_ListViewData;
  239.  
  240.         struct {    /* for palette gadget */
  241.         ULONG    gd_PaletteDepth;    /* num of bitplanes for palette */
  242.         ULONG    gd_PaletteColorOffset;    /* first color of palette */
  243.         ULONG    gd_PaletteActiveColor;    /* selected color */
  244.         } gd_PaletteData;
  245.     } gd_SpecialData;
  246. };
  247. struct MXData {
  248.     USHORT    mx_TextEntries;
  249.     USHORT    mx_ActiveEntry;
  250. };
  251. struct InputData {
  252.     USHORT    id_ActivateNext;
  253.     USHORT    id_ActivatePrev;
  254. };
  255. struct SliderData {
  256.     LONG    sl_Min;
  257.     LONG    sl_Max;
  258.     LONG    sl_Level;
  259. };
  260. struct ScrollerData {
  261.     ULONG    sc_Visible;
  262.     ULONG    sc_Total;
  263.     ULONG    sc_Top;
  264. };
  265. struct CycleData {
  266.     SHORT    cy_LeftEdge;
  267.     SHORT    cy_TopEdge;
  268.     USHORT    cy_Width;
  269.     USHORT    cy_Height;
  270.     USHORT    cy_EntryHeight;
  271.     BYTE    **cy_TextArray;
  272.     BYTE    *cy_ActiveText;
  273.     USHORT    cy_TextEntries;
  274.     USHORT    cy_ActiveEntry;
  275. };
  276. struct CountData {
  277.     SHORT    co_LeftEdge;
  278.     SHORT    co_TopEdge;
  279.     USHORT    co_Width;
  280.     USHORT    co_Height;
  281.     ULONG    co_Min;
  282.     ULONG    co_Max;
  283.     ULONG    co_Value;
  284. };
  285. struct ListViewData {
  286.     SHORT    lv_LeftEdge;
  287.     SHORT    lv_TopEdge;
  288.     USHORT    lv_Width;
  289.     USHORT    lv_Height;
  290.     USHORT    lv_VisibleEntries;
  291.     USHORT    lv_EntryHeight;
  292.     struct List  *lv_List;
  293.     struct Node  *lv_TopNode;
  294.     USHORT    lv_ListEntries;
  295.     USHORT    lv_TopEntry;
  296.     USHORT    lv_SelectedEntry;
  297. };
  298. struct PaletteData {
  299.     USHORT    pd_MaxColors;
  300.     USHORT    pd_ColorOffset;
  301.     ULONG    pd_ActiveColor;
  302. };
  303. struct ExtendedGadget {
  304.     struct Gadget  eg_Gadget;
  305.     USHORT    eg_BorderWidth;        /* needed by editor - DIRECT behind gadget structure !!! */
  306.     USHORT    eg_BorderHeight;    /* needed by editor - DIRECT behind gadget structure !!! */
  307.     SHORT    eg_BorderLeftEdge;    /* needed by modify_gadget() */
  308.     SHORT    eg_BorderTopEdge;    /* needed by modify_gadget() */
  309.     USHORT    eg_Type;        /* internal gadget type */
  310.     USHORT    eg_Flags;        /* special flags, e.g render object type */
  311.     USHORT    eg_DataType;        /* copy of gd_Data */
  312.     USHORT    eg_DataEntry;        /* ordinal number of entry in gl_Data array */
  313.     ULONG    eg_DataFlags;        /* copy of gd_Flags */
  314.     struct GadgetList  *eg_GadgetList;
  315.     struct TextAttr    *eg_TextAttr;
  316.     struct TextFont    *eg_TextFont;
  317.     BYTE    *eg_Text;
  318.     SHORT    eg_TextLeftEdge;
  319.     SHORT    eg_TextTopEdge;
  320.     USHORT    eg_TextWidth;        /* needed by modify_gadget() */
  321.     UBYTE    eg_Hotkey;        /* ASCII value of gadget hotkey */
  322.     UBYTE    eg_HotkeyPos;        /* pos of as hotkey marked (underscore) char in gadget text */
  323.     APTR    eg_Render;        /* ptr to image or border - determined by eg_Flags */
  324.     struct ExtendedGadget  *eg_NextGadget;
  325. };
  326.     /* Global prototypes */
  327.  
  328. struct GadgetList  *create_gadgets(struct RenderInfo  *ri,
  329.                struct GadgetData  *gd, SHORT hoffset, SHORT voffset,
  330.                         BYTE **language_text_array);
  331. VOID  free_gadgets(struct GadgetList  *gl);
  332. VOID  display_gadgets(struct Window  *win, struct GadgetList  *gl);
  333. VOID  refresh_gadgets(struct GadgetList  *gl);
  334. VOID  modify_gadget(struct GadgetList  *gl, USHORT data_entry,
  335.           LONG left_edge, LONG top_edge, ULONG width, ULONG height);
  336. ULONG set_gadget_attributes(struct GadgetList  *gl, USHORT data_entry,
  337.          ULONG flag_mask, ULONG flag_bits, ULONG data1, ULONG data2,
  338.                                    VOID *data3);
  339. VOID  activate_input_gadget(struct GadgetList  *gl, USHORT data_entry);
  340. struct Gadget  *gadget_address(struct GadgetList  *gl, USHORT data_entry);
  341. struct Window  *remove_gadgets(struct GadgetList  *gl);
  342. struct IntuiMessage  *get_msg(struct MsgPort  *uport);
  343. VOID  reply_msg(struct IntuiMessage  *imsg);
  344.  
  345.     /* Global pragmas */
  346.  
  347. #pragma intfunc(create_gadgets(a0,a1,d0,d1,a2))
  348. #pragma intfunc(free_gadgets(a0))
  349. #pragma intfunc(display_gadgets(a0,a1))
  350. #pragma intfunc(refresh_gadgets(a0))
  351. #pragma intfunc(modify_gadget(a0,d0,d1,d2,d3,d4))
  352. #pragma intfunc(set_gadget_attributes(a0,d0,d1,d2,d3,d4,a1))
  353. #pragma intfunc(activate_input_gadget(a0,d0))
  354. #pragma intfunc(gadget_address(a0,d0))
  355. #pragma intfunc(remove_gadgets(a0))
  356. #pragma intfunc(get_msg(a0))
  357. #pragma intfunc(reply_msg(a0))
  358.  
  359. #endif   /* ISUP_GADGETS_H */
  360.